With virtual machine technology, a user can create and run multiple operating environments at the same time. Each operating environment, or virtual machine, requires its own “guest” operating system (OS) and can run software applications independently from the other virtual machines. Virtual machine technology provides many benefits as it can lower information technology (IT) costs through increased efficiency, flexibility and responsiveness. Each virtual machine acts as a separate environment that reduces risks and allows developers to quickly recreate different OS configurations or compare versions of applications designed for different OSs. Additional customer uses for VMs include cloud services, targeted production server consolidation, hosting of legacy applications (older versions), and computer or server backup.
Each OS may further access one or more virtualized disks for users of the VM to store and retrieve data. This virtualized disk is a logical partitioning of an underlying physical disk of the server, or “Host”. The Host may also have an OS (“Host OS”) which follows a data caching policy for the host disk. However, the Host OS does not have any knowledge regarding the virtual disk file format, and thus cannot tune the caching of data accessed therein accordingly, since the virtual disk is simply viewed as an ordinary file by the Host OS. Further, blocks in a virtual disk file are stored unordered. The host OS filesystem divides this virtual disk file into blocks, and those blocks may be stored unordered on the physical disk. When a read operation is performed in the VM, the host OS reads from the beginning of the “file” associated with the virtual disk, may then skip to a middle of the file, and then return back to the beginning again, illustrating highly inefficient and mechanically expensive access of data, particularly for rotational disks.